/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.controlador;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.controlador.backingBean.BKAlmacenTienda;
import pe.com.cotelasa.scp.dominio.common.Constantes;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.URLPaginacion;
import pe.com.cotelasa.scp.dominio.common.util.UtilitarioFecha;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioArticuloSede;
import pe.com.cotelasa.scp.dominio.service.IServicioSede;
import pe.com.cotelasa.scp.entidad.Articulo;
import pe.com.cotelasa.scp.entidad.ArticuloSede;
import pe.com.cotelasa.scp.entidad.Sede;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKSession;

/**
 *
 * @author WINDOWS 7
 */
@Named(value = "MBAlmacenTienda")
@Scope("request")
public class MBAlmacenTienda extends MBGenerico implements Serializable {

    @Inject
    private BKAlmacenTienda bk;
    @Inject
    private IServicioArticuloSede servicio;
    @Inject
    private IServicioSede servicioSede;
    @Autowired
    BKSession session;

    public String mostrarProductosStock() {

        try {
            bk.setListaArticuloStock(new ArrayList<ArticuloSede>());

            ArticuloSede artBusqueda = new ArticuloSede();
            artBusqueda.setEmpresa(session.getEmpresa());
            artBusqueda.setArticulo(new Articulo(0));
            artBusqueda.setSede(session.getSede());
            artBusqueda.setCodigoCliente("");
            artBusqueda.getArticulo().setModelo("");
            bk.getListaArticuloStock().addAll(servicio.listaStockPorFiltro(artBusqueda));
            /*bk.setListaSede(new ArrayList<Sede>());
             bk.setIdSede(session.getSede().getId());*/
            if (session.getSede().getEsTienda() == 1 && bk.getIdSede() != session.getSede().getId()) {
                artBusqueda.setCodigoCliente(Constantes.CodigoTienda.CODIGO);

                for (Sede sede : servicioSede.listaSedePorEmpresa(session.getEmpresa().getId())) {
                    if (sede.getEstadoRegistro() == ESTADO_REGISTRO.ACTIVO.getValor() && sede.getEsAlmacen() == 1 && !sede.equals(session.getSede())) {
                        //bk.getListaSede().add(sede);
                        artBusqueda.setSede(sede);
                        Collection<ArticuloSede> lista1 = servicio.listaStockPorFiltro(artBusqueda);
                        if (!lista1.isEmpty()) {
                            for (ArticuloSede articulo : lista1) {
                                System.out.println("nombre de sede: " + articulo.getSede().getNombre());
                            }

                            bk.getListaArticuloStock().addAll(lista1);
                        }

                    }
                }
            }


            /*for(ArticuloSede art:bk.getListaArticuloStock()){
             if(art.getFecIngreso() != null){
             art.setNumDias(UtilitarioFecha.restarFechas(new Date(), art.getFecIngreso()));
             }
             }*/

        } catch (ServiceException e) {
            e.printStackTrace();
        }
        return URLPaginacion.Ventas.URL_LISTA_PRODUCTOS;

    }

    public void buscarProductosEnLocales() {
        try {
            ArticuloSede artBusqueda = new ArticuloSede();
            artBusqueda.setEmpresa(session.getEmpresa());
            artBusqueda.setArticulo(new Articulo(0));
            artBusqueda.setSede(servicioSede.conseguirSedePorId(bk.getIdSede()));

            if (session.getSede().getEsTienda() == 1 && bk.getIdSede() != session.getSede().getId()) {
                artBusqueda.setCodigoCliente(Constantes.CodigoTienda.CODIGO);
            }
            bk.setListaArticuloStock(servicio.listaStockPorFiltro(artBusqueda));
        } catch (ServiceException e) {
            e.printStackTrace();
        }
    }
}
